#ifndef __BSP_USART_H_
#define __BSP_USART_H_

#include <stdio.h>
#include "stm32f10x.h"
#include "ring_buf.h"

/************************************************************/
#define USARTx						USART1
#define USARTx_BaudRate				115200
#define USARTx_Tx_GPIO_PORT			GPIOA
#define USARTx_Tx_Pin  				GPIO_Pin_9
#define USARTx_Rx_GPIO_PORT			GPIOA
#define USARTx_Rx_Pin  				GPIO_Pin_10

#define USARTx_GPIO_APBxClkCmd    	RCC_APB2PeriphClockCmd
#define USARTx_GPIO_CLK           	RCC_APB2Periph_GPIOA
#define USARTx_APBxClkCmd			RCC_APB2PeriphClockCmd
#define USARTx_CLK					RCC_APB2Periph_USART1
#define USARTx_IRQ		            USART1_IRQn
#define USARTx_IRQHandler	        USART1_IRQHandler
/************************************************************/

/************************************************************/
//#define  USARTx                   USART2
//#define  USARTx_CLK               RCC_APB1Periph_USART2
//#define  USARTx_APBxClkCmd        RCC_APB1PeriphClockCmd
//#define  USARTx_BaudRate          115200
//#define  USARTx_GPIO_CLK          RCC_APB2Periph_GPIOA
//#define  USARTx_APBxClkCmd    	RCC_APB2PeriphClockCmd    
//#define  USARTx_Tx_PORT	        GPIOA   
//#define  USARTx_Tx_Pin        	GPIO_Pin_2
//#define  USARTx_Rx_PORT		    GPIOA
//#define  USARTx_Rx_Pin        	GPIO_Pin_3
//#define  USARTx_IRQ               USART2_IRQn
//#define  USARTx_IRQHandler        USART2_IRQHandler
/************************************************************/


/************************************************************/
//#define  USARTx                   USART3
//#define  USARTx_CLK               RCC_APB1Periph_USART3
//#define  USARTx_APBxClkCmd        RCC_APB1PeriphClockCmd
//#define  USARTx_BaudRate          115200
//#define  USARTx_GPIO_CLK          RCC_APB2Periph_GPIOB
//#define  USARTx_GPIO_APBxClkCmd   RCC_APB2PeriphClockCmd
//#define  USARTx_Tx_GPIO_PORT      GPIOB   
//#define  USARTx_Tx_Pin	        GPIO_Pin_10
//#define  USARTx_Rx_GPIO_PORT      GPIOB
//#define  USARTx_Rx_Pin      		GPIO_Pin_11
//#define  USARTx_IRQ               USART3_IRQn
//#define  USARTx_IRQHandler        USART3_IRQHandler
/************************************************************/


/************************************************************/
//#define  USARTx                   UART4
//#define  USARTx_CLK               RCC_APB1Periph_UART4
//#define  USARTx_APBxClkCmd        RCC_APB1PeriphClockCmd
//#define  USARTx_BaudRate          115200
//#define  USARTx_GPIO_CLK          RCC_APB2Periph_GPIOC
//#define  USARTx_GPIO_APBxClkCmd   RCC_APB2PeriphClockCmd
//#define  USARTx_Tx_GPIO_PORT      GPIOC   
//#define  USARTx_Tx_Pin      		GPIO_Pin_10
//#define  USARTx_Rx_GPIO_PORT      GPIOC
//#define  USARTx_Rx_PIN	        GPIO_Pin_11
//#define  USARTx_IRQ               UART4_IRQn
//#define  USARTx_IRQHandler        UART4_IRQHandler
/************************************************************/


/************************************************************/
//#define  USARTx                   UART5
//#define  USARTx_CLK               RCC_APB1Periph_UART5
//#define  USARTx_APBxClkCmd        RCC_APB1PeriphClockCmd
//#define  USARTx_BaudRate          115200
//#define  USARTx_GPIO_CLK          RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD
//#define  USARTx_GPIO_APBxClkCmd   RCC_APB2PeriphClockCmd    
//#define  USARTx_Tx_GPIO_PORT      GPIOC   
//#define  USARTx_Tx_Pin	        GPIO_Pin_12
//#define  USARTx_Rx_GPIO_PORT      GPIOD
//#define  USARTx_Rx_Pin	        GPIO_Pin_2
//#define  USARTx_IRQ               UART5_IRQn
//#define  USARTx_IRQHandler        UART5_IRQHandler
/************************************************************/



void usart_init(void);
void usart_sendbyte(USART_TypeDef * pUSARTx, uint8_t ch);
void usart_sendstring(USART_TypeDef * pUSARTx, char *str);


#endif

